package com.ruoyi.cms.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cms.article.domain.CmsArticle;
import com.ruoyi.cms.article.domain.vo.CmsArticleSearchVo;
import com.ruoyi.cms.article.domain.vo.SiteCmsArticleSelectVo;

import java.util.List;

public interface ICmsArticleService extends IService<CmsArticle> {
    /**
     * 查询文章管理
     *
     * @param id 文章管理主键
     * @return 文章管理
     */
    public CmsArticle selectCmsArticleById(Long id);

    /**
     * 查询文章管理列表
     *
     * @param cmsArticle 文章管理
     * @return 文章管理集合
     */
    public List<CmsArticle> selectCmsArticleList(CmsArticle cmsArticle);


    /**
     * 查询文章管理列表
     *
     * @param vo
     * @return
     */
    public List<CmsArticle> selectCmsArticleVoList(CmsArticleSearchVo vo);


    /**
     * 查询文章管理列表
     *
     * @param vo
     * @return
     */
    public List<CmsArticle> selectCmsArticleVoListForSite(SiteCmsArticleSelectVo vo);


    /**
     * 查询文章管理列表
     *
     * @param vo
     * @return
     */
    //public List<CmsArticle> selectCmsArticleTopVoList(SiteCmsArticleSelectVo vo);


    /**
     * 查询推荐文章列表
     */
    public List<CmsArticle> selectCmsArticleListRecommend(CmsArticle cmsArticle);

    /**
     * 按分类查询文章列表
     */
    public List<CmsArticle> selectCmsArticleListByTypeId(Long id);

    /**
     * 按标签查询文章列表
     */
    public List<CmsArticle> selectCmsArticleListByTagId(Long id);

    /**
     * 新增文章管理
     *
     * @param cmsArticle 文章管理
     * @return 结果
     */
    public Long insertCmsArticle(CmsArticle cmsArticle);

    /**
     * 修改文章管理
     *
     * @param cmsArticle 文章管理
     * @return 结果
     */
    public int updateCmsArticle(CmsArticle cmsArticle);

    /**
     * 批量删除文章管理
     *
     * @param ids 需要删除的文章管理主键集合
     * @return 结果
     */
    public int deleteCmsArticleByIds(Long[] ids);

    /**
     * 删除文章管理信息
     *
     * @param id 文章管理主键
     * @return 结果
     */
    public int deleteCmsArticleById(Long id);


    /**
     * 查询当前分类id下文章的数量
     *
     * @param typeId
     * @return
     */
    public Long selectCmsArticleCountByTypeId(Long typeId);


    /**
     * 查询文章列表（网站前台）
     *
     * @param typeId 分类的id
     * @param count  返回的条数
     * @return
     */
    public List<CmsArticle> selectCmsArticleTopVoListForSite(Long typeId, Long count);


    /**
     * 查询文章详细（网站前台）
     * @param articleId
     * @return
     */
    //public CmsArticle selectCmsArticleDetailForSite(Long articleId);

    /**
     * 查询文章详细（网站前台）
     *
     * @param typeId
     * @param articleId
     * @return
     */
    public CmsArticle selectCmsArticleDetailForSite(Long typeId, Long articleId);


}
